/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package nexus.foros;

import control.UserBean;
import java.util.ArrayList;
import javax.faces.component.UIParameter;
import javax.faces.context.FacesContext;
import javax.faces.el.VariableResolver;
import javax.faces.event.ActionEvent;
import javax.faces.event.ValueChangeEvent;
import javax.faces.model.SelectItem;
import nexus.adec.Carrera;
import nexus.adec.GestorEspacioDB;
import nexus.adec.GrupoAcademico;
import nexus.adec.Rol;

/**
 *
 * @author juampi
 */
public class RestringirForo {
     private ArrayList<RestringirCarrera> carreras;
    private String[] seleccionados;
    private String codigoForo;
    private String codigoEspacio;
    public RestringirForo() {
        seleccionados=new String[0];
        codigoEspacio = getUserBean().getCodigoCurso();
        carreras = new ArrayList<RestringirCarrera>();
        ArrayList<Carrera> cs = GestorEspacioDB.getInstance().listarCarrerasEspacio(getUserBean().getCodigoCurso());
        for (Carrera carrera : cs) {
            RestringirCarrera itemC = new RestringirCarrera(carrera.getNombreCarrera(), carrera.getCodigoCarrera(),getUserBean().getId(),getUserBean().getCodigoCurso());
            carreras.add(itemC);
        }
    }
    public void selectionChanged(ValueChangeEvent evt)
    {
        seleccionados = (String[]) evt.getNewValue();
    }
    public String[] getSeleccionados(){return seleccionados;}
    public void setSeleccionados(String[] data){seleccionados=data;}
    public ArrayList<SelectItem> getRoles(){
        ArrayList<Rol> roles=GestorEspacioDB.getInstance().listarRoles();
        ArrayList<SelectItem> items=new ArrayList<SelectItem>();
        for(Rol rol : roles){
            items.add(new SelectItem(rol.getCodigoRolEspacio(),rol.getNombreRol()));
        }
        return items;
    }
    public void mostrar(ActionEvent ae){
        UIParameter component = (UIParameter) ae.getComponent().findComponent("codigoRestringir");
        codigoForo=component.getValue().toString();
    }
    /**
     * @return the carreras
     */
    public ArrayList<RestringirCarrera> getCarreras() {
        if(codigoEspacio.compareTo(getUserBean().getCodigoCurso())!=0){
            carreras = new ArrayList<RestringirCarrera>();
            ArrayList<Carrera> cs = GestorEspacioDB.getInstance().listarCarrerasEspacio(getUserBean().getCodigoCurso());
            for (Carrera carrera : cs) {
                RestringirCarrera itemC = new RestringirCarrera(carrera.getNombreCarrera(), carrera.getCodigoCarrera(),getUserBean().getId(),getUserBean().getCodigoCurso());
                carreras.add(itemC);
            }
            seleccionados=new String[0];
        }
        return carreras;
    }

    /**
     * @param carreras the carreras to set
     */
    public void setCarreras(ArrayList<RestringirCarrera> carreras) {
        this.carreras = carreras;
    }
    public UserBean getUserBean() {
        FacesContext context = FacesContext.getCurrentInstance();
        VariableResolver vr = context.getApplication().getVariableResolver();
        UserBean ub =(UserBean) vr.resolveVariable(context, "userBean");
        return ub;
    }
    public void actionGuardarFiltro(ActionEvent event) {
        ArrayList<GrupoAcademico> grupos = new ArrayList<GrupoAcademico>();
        ArrayList<RestringirCarrera> carreras = getCarreras();
        for (RestringirCarrera itemCarrera : carreras) {
            for (RestringirMateria itemMateria : itemCarrera.getMaterias()) {
                for (RestringirGrupo itemGrupo : itemMateria.getGrupos()) {
                    if(itemGrupo.isSeleccionado()) {
                        GrupoAcademico g = new GrupoAcademico(itemCarrera.getCodigoCarrera(), itemMateria.getCodigoMateria(), itemGrupo.getNombreGrupo());
                        grupos.add(g);
                    }
                }
            }
        }
        ArrayList<String> roles=new ArrayList<String>();
        for(String c : seleccionados){
            roles.add(c);
        }
        GestorForosDB.getInstance().asignarPreferencias(codigoForo, codigoEspacio,grupos,roles);
    }
      public UserBean getUsuario(){
        FacesContext facesContext = FacesContext.getCurrentInstance();
        VariableResolver vr = facesContext.getApplication().getVariableResolver();
        UserBean user = (UserBean)vr.resolveVariable(facesContext, "userBean");
        return user;
    }
}
